<?php

require_once 'Banco.php';
require_once 'DAOEventoRepublica.php';
require_once 'Model/Imagem.php';

class DAOImagemRepublica extends Banco {

    function getImagemPrincipal($codigoRepublica) {
        $ie = NULL;
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($sql = $banco->prepare("SELECT IRE_CODIGO, IRE_CODREPUBLICA, IRE_DESCRICAO, IRE_IMAGEM, IRE_PRINCIPAL FROM TB_IMAGEMREPUBLICA WHERE IRE_CODREPUBLICA = ? AND lower(IRE_PRINCIPAL)='s'")) {
            $sql->bind_param('i', $codigoRepublica);
            $sql->execute();
            $sql->bind_result($id, $republica, $descricao, $imagem, $principal);
            $de = new DAORepublica();
            while ($sql->fetch()) {
                $ie = new Imagem();
                $ie->setCodigo($id);
                $ie->setDescricao($descricao);
                $ie->setObjeto($de->getRepublica($republica));
                $ie->setImagem($imagem);
                $ie->setPrincipal($principal);
            }
            $sql->close();
        }
        $banco->close();
        return $ie;
    }

    function getImagens($codigoRepublica, $limite = 0) {
        $imagens = array();
        Banco::conecta();
        $banco = Banco::getBanco();
        if ($limite == 0) {
            $query = "SELECT IRE_CODIGO, IRE_CODREPUBLICA, IRE_DESCRICAO, IRE_IMAGEM, IRE_PRINCIPAL FROM TB_IMAGEMREPUBLICA WHERE IRE_CODREPUBLICA = ? AND lower(IRE_PRINCIPAL)='n'";
        } else {
            $query = "SELECT IRE_CODIGO, IRE_CODREPUBLICA, IRE_DESCRICAO, IRE_IMAGEM, IRE_PRINCIPAL FROM TB_IMAGEMREPUBLICA WHERE IRE_CODREPUBLICA = ? AND lower(IRE_PRINCIPAL)='n' ORDER BY RAND() LIMIT " . $limite . ";";
        }
        if ($sql = $banco->prepare($query)) {
            $sql->bind_param('i', $codigoRepublica);
            $sql->execute();
            $sql->bind_result($id, $republica, $descricao, $imagem, $principal);
            $de = new DAORepublica();
            while ($sql->fetch()) {
                $ie = new Imagem();
                $ie->setCodigo($id);
                $ie->setDescricao($descricao);
                $ie->setObjeto($de->getRepublica($republica));
                $ie->setImagem($imagem);
                $ie->setPrincipal($principal);
                $imagens[] = (object) $ie;
            }
            $sql->close();
        }
        $banco->close();
        return $imagens;
    }

    function addImagem(Imagem $imagem) {
        Banco::conecta();
        $banco = Banco::getBanco();
        if (is_a($imagem->getObjeto(), 'Republica')) {
            $republica = $imagem->getObjeto()->getCodigo();
        } else {
            $republica = NULL;
        }
        $descricao = $imagem->getDescricao();
        $img = $imagem->getImagem();
        $principal = $imagem->getPrincipal();
        if ($sql = $banco->prepare("INSERT INTO TB_IMAGEMREPUBLICA VALUES (DEFAULT, ?, ?, '{$img}', ?);")) {
            $sql->bind_param('iss', $republica, $descricao, $principal);
            $sql->execute();
            $sql->close();
        }
        $banco->close();
    }

    function updateImagem(Imagem $imagem) {
        Banco::conecta();
        $banco = Banco::getBanco();
        if (is_a($imagem->getObjeto(), 'Republica')) {
            $republica = $imagem->getObjeto()->getCodigo();
            $img = $imagem->getImagem();
            if ($this->getImagemPrincipal($republica) != NULL) {
                if ($sql = $banco->prepare("UPDATE TB_IMAGEMREPUBLICA SET IRE_IMAGEM=? WHERE IRE_CODREPUBLICA=? AND IRE_PRINCIPAL='S';")) {
                    $sql->bind_param('si', $img, $republica);
                    $sql->execute();
                    $sql->close();
                }
                $banco->close();
            } else {
                $this->addImagem($imagem);
            }
        }
    }

    function removeImagem(Imagem $imagem) {
        Banco::conecta();
        $banco = Banco::getBanco();
        $codigo = $imagem->getCodigo();
        if ($sql = $banco->prepare("UPDATE TB_IMAGEMREPUBLICA SET IRE_PRINCIPAL='R' WHERE IRE_CODIGO=?;")) {
            $sql->bind_param('i', $codigo);
            $sql->execute();
            $sql->close();
        }
        $banco->close();
    }

}

?>
